Levenşteyn məsafəsi
Levenşteyn məsafəsi — informasiya nəzəriyyəsi, dilçilik və kompüter elmində iki ardıcıllıq arasındakı fərqi ölçmək üçün sətir ölçüsü. Qeyri-rəsmi olaraq iki söz arasındakı Levenşteyn məsafəsi bir sözü digərinə dəyişdirmək üçün tələb olunan tək simvollu redaktələrin (daxiletmə, silmə və ya əvəzetmə) minimum sayıdır. O, 1965-ci ildə bu məsafəni hesablayan sovet riyaziyyatçısı Vladimir Levenşteynin şərəfinə adlandırılıb.
Levenşteyn məsafəsi "redaktə" məsafəsi də adlandırıla bilər, baxmayaraq ki, bu termin həm də ümumi olaraq redaktə məsafəsi kimi tanınan daha böyük məsafə ölçüləri ailəsini ifadə edə bilər.:32 Bu, sətir düzülüşləri ilə sıx bağlıdır.
İki
a
,
b
{\displaystyle a,b}
sətri arasındakı Levenşteyn məsafəsi (müvafiq olaraq
|
a
|
{\displaystyle |a|}
və
|
b
|
{\displaystyle |b|}
uzunluğu)
lev
(
a
,
b
)
{\displaystyle \operatorname {lev} (a,b)}
ilə verilir.
lev
(
a
,
b
)
=
{
|
a
|
if
|
b
|
=
0
,
|
b
|
if
|
a
|
=
0
,
lev
(
tail
(
a
)
,
tail
(
b
)
)
if
head
(
a
)
=
head
(
b
)
,
1
+
min
{
lev
(
tail
(
a
)
,
b
)
lev
(
a
,
tail
(
b
)
)
lev
(
tail
(
a
)
,
tail
(
b
)
)
otherwise
{\displaystyle \operatorname {lev} (a,b)={\begin{cases}|a|&{\text{ if }}|b|=0,\\|b|&{\text{ if }}|a|=0,\\\operatorname {lev} {\big (}\operatorname {tail} (a),\operatorname {tail} (b){\big )}&{\text{ if }}\operatorname {head} (a)=\operatorname {head} (b),\\1+\min {\begin{cases}\operatorname {lev} {\big (}\operatorname {tail} (a),b{\big )}\\\operatorname {lev} {\big (}a,\operatorname {tail} (b){\big )}\\\operatorname {lev} {\big (}\operatorname {tail} (a),\operatorname {tail} (b){\big )}\\\end{cases}}&{\text{ otherwise}}\end{cases}}}
Məsələn, "anket" və "aptek" sözləri arasındakı Levenşteyn məsafəsi 3-dür, çünki aşağıdakı 3 redaktə bir hərfi digərinə dəyişir və bunu 3-dən az redaktə ilə etmək mümkün deyil:
anket → apket ("n" hərfini "p" ilə dəyişdirmək),
apket → aptet ("k" hərfini "t" ilə dəyişdirmək),
aptet → aptek ("t" hərfini "k" ilə dəyişdirmək).
Məsafəsi 1 olan sözlərə "qaş" və "daş"ı nümunə göstərmək olar:
qaş → daş ("q" hərfini "d" ilə dəyişdirmək).